home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / dev / c / RConfig.lha / RConfig_v1.1 / src / rc2.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-09-20  |  13.3 KB  |  396 lines

  1. /*
  2.  * RConfig -- Replacement Library Configuration
  3.  *   Copyright 1992 by Anthon Pang, Omni Communications Products
  4.  *
  5.  * Source File: rc2.c
  6.  * Description: Source file generated by GTB.
  7.  * Comments: This header added after creation by GTB.
  8.  *   Additional casting for clean compile.
  9.  *   Mods to save/recall ccopts between window invocations.
  10.  */
  11.  
  12. /*
  13.  *  Source generated with GadToolsBox V1.4
  14.  *  which is (c) Copyright 1991,92 Jaba Development
  15.  */
  16.  
  17. #include <exec/types.h>
  18. #include <intuition/intuition.h>
  19. #include <intuition/classes.h>
  20. #include <intuition/classusr.h>
  21. #include <intuition/imageclass.h>
  22. #include <intuition/gadgetclass.h>
  23. #include <libraries/gadtools.h>
  24. #include <graphics/displayinfo.h>
  25. #include <graphics/gfxbase.h>
  26. #include <clib/exec_protos.h>
  27. #include <clib/intuition_protos.h>
  28. #include <clib/gadtools_protos.h>
  29. #include <clib/graphics_protos.h>
  30. #include <clib/utility_protos.h>
  31. #include <string.h>
  32.  
  33. #include "rc2.h"
  34.  
  35. struct Screen         *Scr = NULL;
  36. APTR                   VisualInfo = NULL;
  37. struct Window         *RConfigWnd = NULL;
  38. struct Window         *CCOPTSWnd = NULL;
  39. struct Gadget         *RConfigGList = NULL;
  40. struct Gadget         *CCOPTSGList = NULL;
  41. struct Menu           *RConfigMenus = NULL;
  42. struct Gadget         *RConfigGadgets[15];
  43. struct Gadget         *CCOPTSGadgets[12];
  44. UWORD                  RConfigLeft = 10;
  45. UWORD                  RConfigTop = 15;
  46. UWORD                  RConfigWidth = 557;
  47. UWORD                  RConfigHeight = 118;
  48. UWORD                  CCOPTSLeft = 10;
  49. UWORD                  CCOPTSTop = 15;
  50. UWORD                  CCOPTSWidth = 609;
  51. UWORD                  CCOPTSHeight = 119;
  52. UBYTE                 *RConfigWdt = (UBYTE *)"Replacement Library Configuration";
  53. UBYTE                 *CCOPTSWdt = (UBYTE *)"Optimization Control";
  54.  
  55. UBYTE         *ALLOCA_TYPE0Labels[] = {
  56.     (UBYTE *)"Safe",
  57.     (UBYTE *)"Risky",
  58.     NULL };
  59.  
  60. UBYTE         *STKCHK_TYPE0Labels[] = {
  61.     (UBYTE *)"Better",
  62.     (UBYTE *)"Dynastack",
  63.     NULL };
  64.  
  65. UBYTE         *MAIN_TYPE0Labels[] = {
  66.     (UBYTE *)"Detach",
  67.     (UBYTE *)"Resident",
  68.     NULL };
  69.  
  70. UBYTE         *INTEGER_SIZE0Labels[] = {
  71.     (UBYTE *)"32 bits",
  72.     (UBYTE *)"16 bits",
  73.     NULL };
  74.  
  75. UBYTE         *DATA_SIZE0Labels[] = {
  76.     (UBYTE *)"Small",
  77.     (UBYTE *)"Large",
  78.     NULL };
  79.  
  80. UBYTE         *susr1Labels[] = {
  81.     (UBYTE *)"Ignore",
  82.     (UBYTE *)"Allocate First",
  83.     NULL };
  84.  
  85. struct TextAttr topaz8 = {
  86.     ( STRPTR )"topaz.font", 8, 0x00, 0x00 };
  87.  
  88. struct IntuiText  RConfigIText[] = {
  89.     2, 0, JAM1,195, 67, &topaz8, (UBYTE *)"Compiler Configuration", &RConfigIText[1],
  90.     1, 0, JAM1,77, 11, &topaz8, (UBYTE *)"_", &RConfigIText[2],
  91.     1, 0, JAM1,37, 30, &topaz8, (UBYTE *)"_", &RConfigIText[3],
  92.     1, 0, JAM1,53, 48, &topaz8, (UBYTE *)"_", &RConfigIText[4],
  93.     1, 0, JAM1,20, 83, &topaz8, (UBYTE *)"_", &RConfigIText[5],
  94.     1, 0, JAM1,210, 83, &topaz8, (UBYTE *)"_", &RConfigIText[6],
  95.     1, 0, JAM1,330, 7, &topaz8, (UBYTE *)"_", NULL };
  96.  
  97. struct IntuiText  CCOPTSIText[] = {
  98.     1, 0, JAM1,14, 7, &topaz8, (UBYTE *)"Optimization", &CCOPTSIText[1],
  99.     1, 0, JAM1,280, 7, &topaz8, (UBYTE *)"Register", NULL };
  100.  
  101. struct NewMenu RConfigNewMenu[] = {
  102.     NM_TITLE, (STRPTR)"Project", NULL, 0, 0L, NULL,
  103.     NM_ITEM, (STRPTR)"About...", (STRPTR)"?", 0, 0L, NULL,
  104.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  105.     NM_ITEM, (STRPTR)"Change Directory...", (STRPTR)"C", 0, 0L, NULL,
  106.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  107.     NM_ITEM, (STRPTR)"Quit", (STRPTR)"Q", 0, 0L, NULL,
  108.     NM_END, NULL, NULL, 0, 0L, NULL };
  109.  
  110. UWORD RConfigGTypes[] = {
  111.     CHECKBOX_KIND,
  112.     CHECKBOX_KIND,
  113.     CHECKBOX_KIND,
  114.     CHECKBOX_KIND,
  115.     CYCLE_KIND,
  116.     CYCLE_KIND,
  117.     CYCLE_KIND,
  118.     CYCLE_KIND,
  119.     CYCLE_KIND,
  120.     INTEGER_KIND,
  121.     INTEGER_KIND,
  122.     INTEGER_KIND,
  123.     BUTTON_KIND,
  124.     BUTTON_KIND,
  125.     BUTTON_KIND
  126. };
  127.  
  128. UWORD CCOPTSGTypes[] = {
  129.     CHECKBOX_KIND,
  130.     CHECKBOX_KIND,
  131.     CHECKBOX_KIND,
  132.     CHECKBOX_KIND,
  133.     CHECKBOX_KIND,
  134.     CHECKBOX_KIND,
  135.     CHECKBOX_KIND,
  136.     CHECKBOX_KIND,
  137.     CHECKBOX_KIND,
  138.     CHECKBOX_KIND,
  139.     CYCLE_KIND,
  140.     BUTTON_KIND
  141. };
  142.  
  143. struct NewGadget RConfigNGad[] = {
  144.     133, 8, 26, 11, (UBYTE *)"AllocA", NULL, GD_ALLOCA_CHK, PLACETEXT_LEFT ,NULL, NULL,
  145.     385, 4, 26, 11, (UBYTE *)"StkChk", NULL, GD_STKCHK_CHK, PLACETEXT_LEFT ,NULL, NULL,
  146.     133, 27, 26, 11, (UBYTE *)"SetJmp/LongJmp", NULL, GD_SETJMP_CHK, PLACETEXT_LEFT ,NULL, NULL,
  147.     133, 45, 26, 11, (UBYTE *)"Main/Exit", NULL, GD_MAIN_CHK, PLACETEXT_LEFT ,NULL, NULL,
  148.     179, 7, 106, 13, NULL, NULL, GD_ALLOCA_TYPE, 0 ,NULL, NULL,
  149.     430, 3, 106, 13, NULL, NULL, GD_STKCHK_TYPE, 0 ,NULL, NULL,
  150.     179, 44, 106, 13, NULL, NULL, GD_MAIN_TYPE, 0 ,NULL, NULL,
  151.     84, 79, 106, 13, (UBYTE *)"Integer", NULL, GD_INTEGER_SIZE, 0 ,NULL, NULL,
  152.     250, 79, 106, 13, (UBYTE *)"Data", NULL, GD_DATA_SIZE, 0 ,NULL, NULL,
  153.     454, 18, 82, 13, (UBYTE *)"Threshhold", NULL, GD_STKCHK_MINSTK, PLACETEXT_LEFT ,NULL, NULL,
  154.     453, 33, 82, 13, (UBYTE *)"Stack Size", NULL, GD_STKCHK_STKSIZE, PLACETEXT_LEFT ,NULL, NULL,
  155.     454, 48, 82, 13, (UBYTE *)"Context Size", NULL, GD_STKCHK_CONTEXT, PLACETEXT_LEFT ,NULL, NULL,
  156.     82, 100, 165, 13, (UBYTE *)"Generate Library", NULL, GD_GENLIB, PLACETEXT_IN ,NULL, NULL,
  157.     321, 100, 153, 13, (UBYTE *)"Cancel", NULL, GD_CANCEL, PLACETEXT_IN ,NULL, NULL,
  158.     379, 79, 153, 13, (UBYTE *)"   Optimization...", NULL, GD_Flags, PLACETEXT_IN ,NULL, NULL
  159. };
  160.  
  161. struct NewGadget CCOPTSNGad[] = {
  162.     14, 18, 26, 11, (UBYTE *)"Two Pass Assembly", NULL, GD_sa, PLACETEXT_RIGHT ,NULL, NULL,
  163.     14, 32, 26, 11, (UBYTE *)"Built-In String Operations", NULL, GD_sb, PLACETEXT_RIGHT ,NULL, NULL,
  164.     13, 46, 26, 11, (UBYTE *)"Bottom for(;;) Loop Test", NULL, GD_sf, PLACETEXT_RIGHT ,NULL, NULL,
  165.     13, 60, 26, 11, (UBYTE *)"Define __C_MACROS_", NULL, GD_sm, PLACETEXT_RIGHT ,NULL, NULL,
  166.     13, 74, 26, 11, (UBYTE *)"Merge Duplicate Strings", NULL, GD_ss, PLACETEXT_RIGHT ,NULL, NULL,
  167.     13, 88, 26, 11, (UBYTE *)"Delay Popping Arguments Until Necessary", NULL, GD_sp, PLACETEXT_RIGHT ,NULL, NULL,
  168.     280, 18, 26, 11, (UBYTE *)"Allow a4 as Register Variable", NULL, GD_r4, PLACETEXT_RIGHT ,NULL, NULL,
  169.     280, 32, 26, 11, (UBYTE *)"Allow a6 as Register Variable", NULL, GD_r6, PLACETEXT_RIGHT ,NULL, NULL,
  170.     280, 46, 26, 11, (UBYTE *)"Weighted Usage Register Allocation", NULL, GD_srsu, PLACETEXT_RIGHT ,NULL, NULL,
  171.     13, 102, 26, 11, (UBYTE *)"Remove Unnecessary LINK/UNLK", NULL, GD_sn, PLACETEXT_RIGHT ,NULL, NULL,
  172.     432, 59, 153, 13, (UBYTE *)"User Variables", NULL, GD_susr, PLACETEXT_LEFT ,NULL, NULL,
  173.     512, 100, 81, 14, (UBYTE *)"Done", NULL, GD_Done, PLACETEXT_IN ,NULL, NULL
  174. };
  175.  
  176. ULONG *RConfigGTags[] = {
  177.     (ULONG *)(TAG_DONE),
  178.     (ULONG *)(TAG_DONE),
  179.     (ULONG *)(TAG_DONE),
  180.     (ULONG *)(TAG_DONE),
  181.     (ULONG * )(GTCY_Labels), (ULONG *)&ALLOCA_TYPE0Labels[ 0 ], (ULONG *)(TAG_DONE),
  182.     (ULONG * )(GTCY_Labels), (ULONG *)&STKCHK_TYPE0Labels[ 0 ], (ULONG *)(TAG_DONE),
  183.     (ULONG * )(GTCY_Labels), (ULONG *)&MAIN_TYPE0Labels[ 0 ], (ULONG *)(TAG_DONE),
  184.     (ULONG * )(GTCY_Labels), (ULONG *)&INTEGER_SIZE0Labels[ 0 ], (ULONG *)(TAG_DONE),
  185.     (ULONG * )(GTCY_Labels), (ULONG *)&DATA_SIZE0Labels[ 0 ], (ULONG *)(TAG_DONE),
  186.     (ULONG *)(GTIN_Number), (ULONG *)2768, (ULONG *)(GTIN_MaxChars), (ULONG *)10, (ULONG *)(TAG_DONE),
  187.     (ULONG *)(GTIN_Number), (ULONG *)8192, (ULONG *)(GTIN_MaxChars), (ULONG *)10, (ULONG *)(TAG_DONE),
  188.     (ULONG *)(GTIN_Number), (ULONG *)128, (ULONG *)(GTIN_MaxChars), (ULONG *)10, (ULONG *)(TAG_DONE),
  189.     (ULONG *)(TAG_DONE),
  190.     (ULONG *)(TAG_DONE),
  191.     (ULONG *)(TAG_DONE)
  192. };
  193.  
  194. extern ULONG ccopts[10];
  195.  
  196. ULONG *CCOPTSGTags[] = {
  197.     (ULONG *)(GTCB_Checked), (ULONG *)TRUE, (ULONG *)(TAG_DONE),
  198.     (ULONG *)(GTCB_Checked), (ULONG *)TRUE, (ULONG *)(TAG_DONE),
  199.     (ULONG *)(GTCB_Checked), (ULONG *)TRUE, (ULONG *)(TAG_DONE),
  200.     (ULONG *)(GTCB_Checked), (ULONG *)TRUE, (ULONG *)(TAG_DONE),
  201.     (ULONG *)(GTCB_Checked), (ULONG *)TRUE, (ULONG *)(TAG_DONE),
  202.     (ULONG *)(GTCB_Checked), (ULONG *)TRUE, (ULONG *)(TAG_DONE),
  203.     (ULONG *)(GTCB_Checked), (ULONG *)TRUE, (ULONG *)(TAG_DONE),
  204.     (ULONG *)(GTCB_Checked), (ULONG *)TRUE, (ULONG *)(TAG_DONE),
  205.     (ULONG *)(GTCB_Checked), (ULONG *)TRUE, (ULONG *)(TAG_DONE),
  206.     (ULONG *)(GTCB_Checked), (ULONG *)TRUE, (ULONG *)(TAG_DONE),
  207.     (ULONG * )(GTCY_Labels), (ULONG *)&susr1Labels[ 0 ], (ULONG *)(TAG_DONE),
  208.     (ULONG *)(TAG_DONE)
  209. };
  210.  
  211. int SetupScreen( void )
  212. {
  213.     if ( ! ( Scr = LockPubScreen((UBYTE * )"Workbench" )))
  214.         return( 1L );
  215.  
  216.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  217.         return( 2L );
  218.  
  219.     return( 0L );
  220. }
  221.  
  222. void CloseDownScreen( void )
  223. {
  224.     if ( VisualInfo ) {
  225.         FreeVisualInfo( VisualInfo );
  226.         VisualInfo = NULL;
  227.     }
  228.  
  229.     if ( Scr        ) {
  230.         UnlockPubScreen( NULL, Scr );
  231.         Scr = NULL;
  232.     }
  233. }
  234.  
  235. void RConfigRender( void )
  236. {
  237.     UWORD        offx, offy;
  238.  
  239.     offx = RConfigWnd->BorderLeft;
  240.     offy = RConfigWnd->BorderTop;
  241.  
  242.     PrintIText( RConfigWnd->RPort, RConfigIText, (long)offx, (long)offy );
  243.  
  244.     DrawBevelBox( RConfigWnd->RPort, offx + 9, offy + 64, 531, 32, GT_VisualInfo, VisualInfo, TAG_DONE );
  245. }
  246.  
  247. int OpenRConfigWindow( void )
  248. {
  249.     struct NewGadget     ng;
  250.     struct Gadget       *g;
  251.     UWORD                lc, tc;
  252.     UWORD                offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  253.  
  254.     if ( ! ( g = CreateContext( &RConfigGList )))
  255.         return( 1L );
  256.  
  257.     for( lc = 0, tc = 0; lc < RConfig_CNT; lc++ ) {
  258.  
  259.         CopyMem((char * )&RConfigNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  260.  
  261.         ng.ng_VisualInfo = VisualInfo;
  262.         ng.ng_TextAttr   = &topaz8;
  263.         ng.ng_LeftEdge  += offx;
  264.         ng.ng_TopEdge   += offy;
  265.  
  266.         RConfigGadgets[ lc ] = g = CreateGadgetA((ULONG)RConfigGTypes[ lc ], g, &ng, ( struct TagItem * )&RConfigGTags[ tc ] );
  267.  
  268.         while( RConfigGTags[ tc ] ) tc += 2;
  269.         tc++;
  270.  
  271.         if ( NOT g )
  272.         return( 2L );
  273.     }
  274.  
  275.     if ( ! ( RConfigMenus = CreateMenus( RConfigNewMenu, GTMN_FrontPen, 0L, TAG_DONE )))
  276.         return( 3L );
  277.  
  278.     LayoutMenus( RConfigMenus, VisualInfo, GTMN_TextAttr, &topaz8, TAG_DONE );
  279.  
  280.     if ( ! ( RConfigWnd = OpenWindowTags( NULL,
  281.                     WA_Left,          RConfigLeft,
  282.                     WA_Top,           RConfigTop,
  283.                     WA_Width,         RConfigWidth,
  284.                     WA_Height,        RConfigHeight + offy,
  285.                     WA_IDCMP,         CHECKBOXIDCMP|CYCLEIDCMP|INTEGERIDCMP|BUTTONIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  286.                     WA_Flags,         WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
  287.                     WA_Gadgets,       RConfigGList,
  288.                     WA_Title,         RConfigWdt,
  289.                     WA_ScreenTitle,   "RConfig v1.1 © 1992 OCP",
  290.                     TAG_DONE )))
  291.         return( 4L );
  292.  
  293.     SetMenuStrip( RConfigWnd, RConfigMenus );
  294.     GT_RefreshWindow( RConfigWnd, NULL );
  295.  
  296.     RConfigRender();
  297.  
  298.     return( 0L );
  299. }
  300.  
  301. void CloseRConfigWindow( void )
  302. {
  303.     if ( RConfigMenus      ) {
  304.         ClearMenuStrip( RConfigWnd );
  305.         FreeMenus( RConfigMenus );
  306.         RConfigMenus = NULL;    }
  307.  
  308.     if ( RConfigWnd        ) {
  309.         CloseWindow( RConfigWnd );
  310.         RConfigWnd = NULL;
  311.     }
  312.  
  313.     if ( RConfigGList      ) {
  314.         FreeGadgets( RConfigGList );
  315.         RConfigGList = NULL;
  316.     }
  317. }
  318.  
  319. void CCOPTSRender( void )
  320. {
  321.     UWORD        offx, offy;
  322.  
  323.     offx = CCOPTSWnd->BorderLeft;
  324.     offy = CCOPTSWnd->BorderTop;
  325.  
  326.     PrintIText( CCOPTSWnd->RPort, CCOPTSIText, (long)offx, (long)offy );
  327.  
  328.     DrawBevelBox( CCOPTSWnd->RPort, offx + 270, offy + 3, 324, 73, GT_VisualInfo, VisualInfo, TAG_DONE );
  329. }
  330.  
  331. int OpenCCOPTSWindow( void )
  332. {
  333.     struct NewGadget     ng;
  334.     struct Gadget       *g;
  335.     UWORD                lc, tc;
  336.     UWORD                offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  337.  
  338.     if ( ! ( g = CreateContext( &CCOPTSGList )))
  339.         return( 1L );
  340.  
  341.     for( lc = 0, tc = 1; lc <= 9; tc += 3) {
  342.         CCOPTSGTags[tc] = (ULONG *)ccopts[lc++];
  343.     }
  344.  
  345.     for( lc = 0, tc = 0; lc < CCOPTS_CNT; lc++ ) {
  346.  
  347.         CopyMem((char * )&CCOPTSNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  348.  
  349.         ng.ng_VisualInfo = VisualInfo;
  350.         ng.ng_TextAttr   = &topaz8;
  351.         ng.ng_LeftEdge  += offx;
  352.         ng.ng_TopEdge   += offy;
  353.  
  354.         CCOPTSGadgets[ lc ] = g = CreateGadgetA((ULONG)CCOPTSGTypes[ lc ], g, &ng, ( struct TagItem * )&CCOPTSGTags[ tc ] );
  355.  
  356.         while( CCOPTSGTags[ tc ] ) tc += 2;
  357.         tc++;
  358.  
  359.         if ( NOT g )
  360.         return( 2L );
  361.     }
  362.  
  363.     if ( ! ( CCOPTSWnd = OpenWindowTags( NULL,
  364.                     WA_Left,          CCOPTSLeft,
  365.                     WA_Top,           CCOPTSTop,
  366.                     WA_Width,         CCOPTSWidth,
  367.                     WA_Height,        CCOPTSHeight + offy,
  368.                     WA_IDCMP,         CHECKBOXIDCMP|CYCLEIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  369.                     WA_Flags,         WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
  370.                     WA_Gadgets,       CCOPTSGList,
  371.                     WA_Title,         CCOPTSWdt,
  372.                     WA_ScreenTitle,   "RConfig v1.1 © 1992 OCP",
  373.                     TAG_DONE )))
  374.         return( 4L );
  375.  
  376.     GT_RefreshWindow( CCOPTSWnd, NULL );
  377.  
  378.     CCOPTSRender();
  379.  
  380.     return( 0L );
  381. }
  382.  
  383. void CloseCCOPTSWindow( void )
  384. {
  385.     if ( CCOPTSWnd        ) {
  386.         CloseWindow( CCOPTSWnd );
  387.         CCOPTSWnd = NULL;
  388.     }
  389.  
  390.     if ( CCOPTSGList      ) {
  391.         FreeGadgets( CCOPTSGList );
  392.         CCOPTSGList = NULL;
  393.     }
  394. }
  395.  
  396.